﻿using DocumentGeneratorPlugins;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;

namespace SPDocumentor.SPModel.SPServiceApplications
{
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.AppManagementSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.BIMonitoringSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.ExcelServerWebSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.GeminiSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.MetadataWebSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.PowerPointConversionSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.PsiSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.ReportingWebSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.SearchAdminWebSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.SearchSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.SecureStoreSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.SPSecurityTokenSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.SPSubscriptionSettingsSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.SPTopologyWebSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.SPUsageSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.TranslationSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.UserProfileSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.VisioGraphicsSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.WordSA))]
    [XmlInclude(typeof(SPDocumentor.SPModel.SPServiceApplications.WorkManagementSA))]
    public class ServiceApplication
    {

        [LabelProperty(Label = "Application ID")]
        public Guid ApplicationClassId { get; set; }


        [LabelProperty(Label = "Application Version")]
        public Version ApplicationVersion { get; set; }


        [LabelProperty(Label = "Display Name")]
        public string DisplayName { get; set; }


        [LabelProperty(Label = "Manage Link")]
        public string ManageLink { get; set; }


        [LabelProperty(Label = "Name")]
        public string Name { get; set; }


        [LabelProperty(Label = "Permissions Link")]
        public string PermissionsLink { get; set; }


        [LabelProperty(Label = "Properties Link")]
        public string PropertiesLink { get; set; }


        [LabelProperty(Label = "Comments")]
        public string Comments { get; set; }


        [LabelProperty(Label = "Default End point")]
        public String[] DefaultEndpoint { get; set; }


        [LabelProperty(Label = "IIS Virtual Directory Path")]
        public string IisVirtualDirectoryPath { get; set; }


        [LabelProperty(Label = "Shared")]
        public bool Shared { get; set; }


        [LabelProperty(Label = "Terms Of Service Uri")]
        public string TermsOfServiceUri { get; set; }


        [LabelProperty(Label = "Uri")]
        public String Uri { get; set; }

        [LabelProperty(Label = "Application Pool Name")]
        public string ApplicationPoolName { get; set; }

        [LabelProperty(Label = "Application Pool Account")]
        public string ApplicationPoolAccount { get; set; }

        [LabelProperty(Label = "Type Name")]
        public string TypeName { get; set; }


        public virtual string Description
        {
            get
            { return "Description du service application "; }
        }
        
    }
}
